昨天我們利用service把計算sign的邏輯串接起來,今天繼續來試試看,要如何取得永豐Api的response,並且在C#解析並還原加密的原始訊息吧!
先讓我們來看看「建立訂單」的基本流程:
永豐API有提供 1.ATM 2.信用卡 3.信用卡+3D驗證
這邊附圖先以信用卡交易流程為主
原始文件有提示實作方法:
將
Message字串 以16進制2位數字轉換成Byte,再以AES CBC方式解密 。

今日工事,就是要來解密Message,以取得還原訊息
這個步驟很重要!!!
產生WebAPIMessage
            BaseRequestModel req = new BaseRequestModel()
            {
                Version = "1.0.0",
                ShopNo = shopNo,
                APIService = APIService.OrderCreate,
                Nonce = nonce,
                Message = message,
                //利用Request物件, AESKey及Nonce組成Sign值
                Sign = SignService.GetSign(nonce, request)
            };
            try
            {
                //_logger.LogWarning(string.Format("呼叫商業收付API Order/{0} , Request:{1}", req.APIService, QPayCommon.SerializeToJson(req)));
                //呼叫商業收付Web API
                var result = await _qPayRepository.CreateApiAsync("Order", req);
                //_logger.LogInformation(string.Format("呼叫商業收付API Order/{0} , Response:{1}", req.APIService, QPayCommon.SerializeToJson(result)));
                string decodedMsg = AesCBC_Encrypt.AESDecrypt(result.Message, hashId, result.Nonce);
                _logger.LogInformation("Response Message:" + decodedMsg);
                var innerResult = JsonConvert.DeserializeObject<BaseResponseModel>(decodedMsg);
          
                return innerResult;
            }
            catch (Exception ex)
            {
                //_logger.LogWarning(null, ex);
                throw ex;
            }